package com.treinamento.pdv.service;

import java.util.Date;
import java.util.List;

import com.treinamento.pdv.dao.ItemVendaDao;
import com.treinamento.pdv.dao.VendaDao;
import com.treinamento.pdv.exceptions.RegistroNaoEncontradoException;
import com.treinamento.pdv.model.Item;
import com.treinamento.pdv.model.ItemVenda;
import com.treinamento.pdv.model.Venda;

public class VendaService {

	private VendaDao vendaDao;
	private ItemVendaDao itemVendaDao;
	
	public VendaService(){
		vendaDao = new VendaDao();
		itemVendaDao = new ItemVendaDao();
	}
	
	public void iniciarVenda(Venda venda){
		venda.setDataVenda(new Date());
		venda.setSituacao("A");
		vendaDao.inserir(venda);
	}
	
	public void cancelarVenda(Venda venda){
		venda.setSituacao("C");
		vendaDao.atualizar(venda);
	}
	
	public void encerrarVenda(Venda venda){
		List<ItemVenda> listItem = venda.getItems();
		Double valorTotal = 0.0;
		
		for (ItemVenda item : listItem){
			valorTotal += item.getItem().getValor() * item.getQuantidade();
		}
		
		venda.setSituacao("F");
		venda.setValorTotal(valorTotal);
		vendaDao.atualizar(venda);
	}
	
	public void inserirItem(Venda venda, Item item, Integer quantidade){
		List<ItemVenda> listItem = venda.getItems();
		ItemVenda itemVenda = new ItemVenda();
		itemVenda.setItem(item);
		itemVenda.setVenda(venda);
		itemVenda.setQuantidade(quantidade);
		itemVendaDao.inserir(itemVenda);
		listItem.add(itemVenda);
	}
	
	public void removerItem(Venda venda, Integer codigo){
		List<ItemVenda> listItem = venda.getItems();
		listItem.remove(codigo);
		vendaDao.atualizar(venda);
	}
	
	public static void main(String args[]) throws RegistroNaoEncontradoException{
		VendaService serv = new VendaService();
		Venda venda = new Venda();
		Item item = new ItemService().buscarItem(1);
		Item item2 = new ItemService().buscarItem(2);
		Item item3 = new ItemService().buscarItem(3);
		
		serv.iniciarVenda(venda);
		serv.inserirItem(venda, item, 2);
		
		serv.inserirItem(venda, item2, 2);
		serv.inserirItem(venda, item3, 2);
		
		
		System.out.println(venda.getCodigo());
		System.out.println(venda.getItems().size());
		
		
	}
}
